//使用工具类创建
    //1.获取系统时间
    //2.判断文件是否存在
    //3.获取文件所在路径
    //4.创建目录


#ifndef __M_UTIL_H__
#define __M_UTIL_H__


#include<iostream>
#include<string>
#include<ctime>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>

namespace zllog
{
    namespace util
    {
        class Data
        {
        public:
            static size_t now()
            {
                return (size_t)time(nullptr);
            }
        };
        class File
        {
        public:
            static bool exists(const std::string& pathname)
            {
                //return (access(pathname.c_str(),F_OK) == 0);  不适用于windows
                struct stat st;
                if(stat(pathname.c_str(),&st) < 0) 
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            static std::string Path(const std::string& pathname)
            {
                //./abc/a.txt,截取./abc/
                size_t pos = 0;
                pos = pathname.find_last_of("/\\"); //find_last_of("/\\")适用于win,查找/\\中的任意一个字符
                if(pos == std::string::npos)
                {
                    return ".";
                }
                else
                {
                    return pathname.substr(0,pos + 1);
                }

            }
            static void createDirectory(const std::string& pathname)
            {
                //./abc/bcd/a.txt
                size_t pos = 0,idx = 0;  //idx标定查找的起始位置
                while(idx < pathname.size())
                {
                    pos = pathname.find_first_of("/\\",idx);
                    if(pos == std::string::npos)
                    {
                        mkdir(pathname.c_str(),0777);
                    }
                    else
                    {
                        //查到/\\就记录父路径,判断父路径是否存在,存在就继续,不存在就在父路径下创建文件
                        std::string parent_dir = pathname.substr(0,pos + 1);
                        if(parent_dir == "." || parent_dir == ".." || exists(parent_dir) == true)
                        {
                            idx = pos + 1;
                            continue;
                        }
                        else
                        {
                            mkdir(parent_dir.c_str(),0777);
                            idx = pos + 1;
                        }
                    }
                }
            }
        };
    };
};

#endif